home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / GRAPHICS / MAND50.ZIP / MANDEL.HLP < prev    next >
Encoding:
Text File  |  1994-10-01  |  31.6 KB  |  828 lines

  1.                    Mandelbrot/Julia
  2.                      Set Generator
  3.             Operating and Reference Manual
  4.                       Version 5.0
  5.  
  6.                      Installation
  7.  
  8.     The Mandelbrot/Julia Set Generator program 
  9. requires an IBM compatible computer with at least 512K 
  10. of memory, a VGA display and a Microsoft compatible 
  11. mouse. The installation process is quite easy. 
  12.  
  13.     First, make a backup copy of your Mandelbrot/Julia 
  14. Set Generator program disk. If necessary, consult your 
  15. PC-DOS/MS-DOS manual for a description of the Diskcopy 
  16. command. Save the original program disk in a safe 
  17. place and use the copy as the working program disk. 
  18.  
  19.     Second, while it is possible to use the 
  20. Mandelbrot/Julia Set Generator on a floppy disk 
  21. system, a hard disk system is a necessity if you wish 
  22. to store a number of image files. To install the 
  23. Mandelbrot/Julia Set Generator on a hard disk use the 
  24. following steps: 
  25.  
  26.     1. Insert the floppy disk in your computer in 
  27.        drive A. (or B if necessary) 
  28.     2. Type A: (or B:)
  29.     3. Type INSTALL A C
  30.  
  31.     Any hard drive letters can be used, for example 
  32. INSTALL B D will install the program from floppy drive 
  33. B to hard drive D. The installation will create a 
  34. directory called MAND5 on your hard drive and you will 
  35. need to enter a CD\MAND5 to change to the 
  36. Mandelbrot/Julia Set Generator directory before 
  37. running the program. Once installed just type MAN to 
  38. start the program. All the files for Mandelbrot/Julia 
  39. Set Generator need to be in the same directory for the 
  40. program to operate successfully. 
  41.  
  42.           Quick Start for Impatient New Users
  43.  
  44.     Type MAN to start the program. After the mouse 
  45. cursor appears click it on the Load Image button at 
  46. the left. When the window appears with the list of 
  47. image file names, simply clicking on one of them will 
  48. display the image using the current color mask. If the 
  49. image file contains a specific color mask filename it 
  50. will be automatically loaded prior to displaying the 
  51. image. Most commands can be interrupted by a simple 
  52. mouse click. 
  53.  
  54.     The zoom window feature is started by double 
  55. clicking on the displayed image. Once the zoom window 
  56. appears, with its crossed center lines, it can be 
  57. moved by holding down the left mouse button, while the 
  58. cursor is inside the zoom window, and positioning the 
  59. window. The zoom window size can be increased or 
  60. reduced by holding down the left mouse button and 
  61. moving the mouse cursor horizontally while it is 
  62. outside the zoom window. Once correctly positioned the 
  63. mouse cursor should be clicked on the right gray 
  64. panel, which will store the changed dimensions. The 
  65. zoom window can be abandoned by clicking the mouse 
  66. cursor on the left gray panel. Be careful not to drag 
  67. the mouse cursor onto the gray panels while resizing. 
  68. The Set Values button should be clicked on next, and 
  69. the image file name changed. If this is not done the 
  70. original image file will be erased. Clicking on the 
  71. Make Image button will start the generation of the new 
  72. zoomed image. 
  73.  
  74.         The Command Buttons and Their Function
  75.  
  76.     Set Values
  77.  
  78.     The Set Values command allows the user to set the 
  79. initial parameters that will be used by the
  80. Mandelbrot/Julia Set Generator to begin generating a 
  81. new image. These values are also available for 
  82. inspection when an image has been displayed. The 
  83. values and their range are: 
  84.  
  85.     Item                             Range
  86. -----------------------------------------------------
  87.     X center value                   -10 to 10
  88.     Y center value                   -10 to 10
  89.     Magnification                    >0
  90.     A value (if a Julia image)       -10 to 10
  91.     B value (if a Julia image)       -10 to 10
  92.     Dwell                            1 to 8191
  93.     Image width in pixels            10 to 4800
  94.     Image type [M J]                 M or J
  95.     Full/Partial image [F P]         F or P
  96.     Default color mask file          xxxxxxxx.MSK
  97.     Display type [0 1]               For future use
  98.     256 color palette number         For future use
  99.     Image file name                  xxxxxxxx.MAN 
  100.                                      or xxxxxxxx.MAR 
  101.  
  102.     To change a value simply click inside the 
  103. rectangle where the value is displayed and then key in 
  104. a new value or file name. File name extensions must be 
  105. .MSK for color masks, .MAN for regular images and .MAR 
  106. for those that are recursive. 
  107.  
  108.     The A and B values are only displayed with Julia 
  109. images. If the recursive image generator is used the 
  110. image width must be a member of the 2^n set, ie. 16, 
  111. 32, 64, 128 etc. The program maintains the 
  112. Full/Partial image status and these values cannot be 
  113. changed by the user. 
  114.  
  115.     Color Masks
  116.  
  117.     When the Color Masks command is chosen a popup 
  118. window presents the four options: 
  119.  
  120.     Create/Display color mask
  121.     Select color mask
  122.     Select palette 
  123.     QUIT 
  124.  
  125.     Clicking on the Create/Display color mask option 
  126. allows the user to create, edit and save color masks. 
  127.  
  128.     Clicking on the Color mask file name box allows 
  129. you to type in a file name. The file name must have 
  130. the extension .MSK or you will not be able to select 
  131. it later. Ranges of dwell values should be typed into 
  132. the squares on the left. Just click on the square, 
  133. type in a dwell value and <Enter>. The colors are 
  134. selected by clicking on the desired color of the color 
  135. wheel in the upper right and then clicking on the odd 
  136. and even boxes at the right. The selected color is 
  137. displayed between the circular menu and the color 
  138. wheel. If the first line of the color mask reads: 
  139.  
  140.     0         9       [blue box]   [white box]
  141.  
  142. then dwell values from 0 to 9 will be colored blue if 
  143. odd and white if even. If a solid color is desired the 
  144. color boxes should be filled with the same color. The 
  145. end of a color mask should be designated with a 
  146. negative value entered into the first dwell box.  The 
  147. default color mask on startup is M1.MSK and its values 
  148. are: 
  149.  
  150.     Dwell Range     Odd color     Even color
  151. -----------------------------------------------
  152.     0     9         [blue box]    [white box]
  153.     10    19        [red box]     [red box]
  154.     20    510       [yellow box]  [yellow box]
  155.     511   511       [black box]   [black box]
  156.     -1
  157.  
  158.     In the case of M1.MSK, any dwell values larger 
  159. than 511 will be colored black (color 0 in the default 
  160. palette). 
  161.  
  162.     The circular menu at upper left has four options. 
  163. Clicking on the up or down arrow jumps to the previous 
  164. or next 16 color mask entries. A total of 256 entries 
  165. can be placed in one color mask. The SAVE option 
  166. stores the color mask currently displayed under the 
  167. name specified in the Color mask file name box. The 
  168. new color mask becomes the currently selected color 
  169. mask. 
  170.  
  171.     Clicking on the Select color mask option presents 
  172. the user with a large window and the names of the 
  173. color masks that have been stored. Clicking on a color 
  174. mask name will select and load that color mask. It 
  175. then can be viewed by selecting the Create/Display 
  176. color mask option. 
  177.  
  178.     Clicking on the Select palette option opens a 
  179. window that displays the current VGA color palette of 
  180. 16 colors. Clicking on the Default box will load the 
  181. default VGA color palette. Clicking on the arrows will 
  182. select other prestored color palettes, up to number 
  183. 57. 
  184.  
  185.     The QUIT option returns the user to the main menu. 
  186.  
  187.     Make Image
  188.  
  189.     Selecting the Make Image command generates a 
  190. Mandelbrot or Julia image based upon the parameters 
  191. entered in the Set Values command. A warning is issued 
  192. before the generation begins to allow the user to 
  193. change the file name, as any existing file of this 
  194. name will be erased. 
  195.  
  196.     A very simple way to generate images is first to 
  197. use Load Image to display a previously generated 
  198. image. Double clicking on the image will produce a 
  199. zoom window overlaid on the display. Clicking and 
  200. holding down the left mouse button allows the zoom 
  201. window to be dragged about the image to an interesting 
  202. portion of the image. The zoom window can be resized 
  203. by dragging the mouse pointer to the left and right 
  204. outside the zoom window. Once the zoom window has been 
  205. positioned and sized, clicking on the gray panel at 
  206. right will automatically store the new zoomed values 
  207. into the Set Values area. Be careful not to drag the 
  208. mouse cursor onto the gray panels while resizing. The 
  209. user will probably wish to enter a new image file name 
  210. using the Set Values command (this will prevent the 
  211. original image file from being erased), and then 
  212. generate a new image of the area defined by the zoom 
  213. window with the Make Image command. While the zoom 
  214. window is present the procedure can be cancelled by 
  215. clicking on the right gray panel around the command 
  216. buttons. The zoom window will only work on images that 
  217. are 480 pixels wide, or less. 
  218.  
  219.     Load Image
  220.  
  221.     The Load Image command presents the user with a 
  222. list of image file names that have been produced with 
  223. the .MAN extension. Clicking on a file name will 
  224. display the image with the current color mask if the 
  225. selected image has no default color mask file name. A 
  226. brief double tone is sounded if there is no default 
  227. color mask file name. If a color mask name was 
  228. included when the image was generated, this color mask 
  229. will be loaded before the image is displayed. 
  230. Partially generated images will automatically continue 
  231. generation when displayed with this command. Once an 
  232. image is displayed double clicking on the image will 
  233. produce a zoom window as described under the Make 
  234. Image command. 
  235.  
  236.     Make R Image
  237.  
  238.     The Make R Image command functions similarly to 
  239. the Make Image command except a recursive procedure is 
  240. used in place of the normal line by line generation. 
  241. The image file should be given the .MAR extension so 
  242. that it will be properly handled when using the Load R 
  243. Image command. In some cases this recursive procedure 
  244. will generate images faster that the normal method. 
  245. Partially generated images cannot be displayed with 
  246. generation automatically continuing as is the case 
  247. with the normal Load Image command. Image files are 
  248. generally larger with the recursive procedure. 
  249.  
  250.     Load R Image
  251.  
  252.     The Load R Image command displays a recursive 
  253. image previously generated with a .MAR extension in 
  254. the file name. A list of such files is presented and 
  255. the selected image is clicked on. Partially generated 
  256. images will not be automatically continued as with the 
  257. Load Image command. 
  258.  
  259.     3-D Image
  260.  
  261.     The 3-D Image command displays an image generated 
  262. with the Make Image command in a pseudo 3-D style. The 
  263. display algorithm is a simple one, but very slow. VGA 
  264. displays have limitations when displaying 3-D 
  265. Mandelbrot images. Best results occur with color masks 
  266. that contain multiple colors and have the dwell ranges 
  267. broken into many small steps. Large values for the 
  268. maximum dwell may result in the top of the image being 
  269. lost. Partially generated images will not be 
  270. automatically continued as with the Load Image 
  271. command. 
  272.  
  273.     Plot Dwell
  274.  
  275.     The Plot Dwell command reads all the dwell values 
  276. of an image stored with the .MAN extension and sums 
  277. them. The sums are then plotted with the current color 
  278. mask used for each dwell value plotted. Only dwell 
  279. values of 2,400 or less will be plotted. These plots 
  280. give an indication of how many points in the image 
  281. have the various dwell values and can be useful in 
  282. constructing a color mask that will display the image 
  283. to best advantage. 
  284.  
  285.     Make PCX
  286.  
  287.     The Make PCX command allows the user to select an 
  288. image file stored with the .MAN extension and create a 
  289. PCX image file. A 16 color PCX file using the default 
  290. VGA color palette can be chosen or several 256 color 
  291. PCX formats are available. Click on one of the small 
  292. boxes to select what type of PCX file you desire. The 
  293. color sequence of each of the 256 color formats is 
  294. displayed. The first example has magenta blending into 
  295. red for dwell values from 0 to 64, from red to yellow 
  296. for dwells from 64 to 128, etc. The PCX image file 
  297. format allows users to import Mandelbrot and Julia 
  298. image files into other software such as desktop 
  299. publishing programs and paint programs. PCX files can 
  300. also be used for Windows wallpaper. 
  301.  
  302.     Print Image
  303.  
  304.     The Print Image command presents the user with 
  305. nine different printer types that are supported, or 
  306. the command can be quit. 
  307.  
  308.     Epson 9 pin
  309.     Epson 24 pin
  310.     IBM 9 pin
  311.     IBM 24 pin
  312.     LaserJet
  313.     DeskJet 500 B/W
  314.     Epson DM Color
  315.     DeskJet 500 C
  316.     PaintJet
  317.     QUIT
  318.  
  319.     The 9 pin printers will output at 120x144 dpi, the 
  320. 24 pin at 180x180 dpi, the Laserjet, Deskjet 500 B/W 
  321. and Color at 150x150 dpi and the Epson DM Color and 
  322. Paintjet at 90x90 dpi. Be patient, the print drivers 
  323. do take time in exchange for attractive output. Color 
  324. is the slowest. Black and white images will be 
  325. dithered. QUIT returns the user to the main menu. 
  326.  
  327.     The Print Image command is basically for quick 
  328. hardcopy. If you wish to print museum quality prints 
  329. try a DeskJet 500 series printer. Create your image 
  330. and then make a PCX file using one of the 256 color 
  331. formats. Next, load this PCX file into the Paintbrush 
  332. program that comes with Windows. This is usually found 
  333. in the Accessories window. Next print the image from 
  334. Paintbrush. You will need a 256 color display to do 
  335. this and the Windows print driver that came with the 
  336. DeskJet printer. Most IBM PC's and clones being sold 
  337. today come with a 256 color display. The DeskJet will 
  338. print your image with a superb color balance at just 
  339. under 100 dpi. Try an image width of about 750 pixels 
  340. to fill out the 8-1/2 inch page. I've used this method 
  341. with a Hewlett-Packard DesignJet 650C and 36 inch wide 
  342. paper with images 3300 pixels wide to produce colored 
  343. output that is truly magnificent. If your printer is 
  344. not supported this method can also be used to print 
  345. your images. The only thing you will need is the 
  346. Windows print driver that came with your printer.
  347.  
  348.     Remember, images my be created which are much 
  349. wider than your screen. The upper left corner of your 
  350. image will be the only area visible. To see the entire 
  351. image, create a 256 color PCX file and use any paint 
  352. program that can read 256 color images. These can be 
  353. very attractive. 
  354.  
  355.     Help File
  356.   
  357.     The Help File command displays the file you are 
  358. currently reading. Clicking on the arrows to the right 
  359. displays the next or previous page. 
  360.  
  361.     Quit MAND50
  362.  
  363.     The Quit MAND50 command returns the user to the 
  364. DOS prompt. 
  365.  
  366.                  Image File Structure
  367.  
  368.     Each image file created by the Mandelbrot/Julia 
  369. Set Generator begins with a 150 byte header. 
  370.  
  371. Byte  Item       Size           Description
  372. ------------------------------------------------------
  373. 0     x           8 byte double  x center point
  374. 8     y           8 byte double  y center point
  375. 16    mag         8 byte double  magnification
  376. 24    a           8 byte double  a for Julia sets
  377. 32    b           8 byte double  b for Julia sets
  378. 40    maxdwell    unsigned int   maximum dwell
  379. 42    width       unsigned int   image width in pixels
  380. 44    mj[2]       char           M/J, image type
  381. 46    partial[2]  char           F/P, full/partial
  382. 48    mask[32]    char           color mask file name
  383. 80    display     integer        display (not used)
  384. 82    pal         integer        palette (not used)
  385. 84    name[50]    char           signature
  386. 134   fill[16]    char           filler
  387.  
  388.     All char strings are terminated with a hexadecimal 
  389. 00 byte. 
  390.  
  391.     The dwell data follows the header. It should be 
  392. noted that this is not a true image file, rather the 
  393. dwell values themselves are stored. This allows users 
  394. to color the image with a large variety of color 
  395. masks. Storing an image file might be simpler but for 
  396. every different color mask a new image file would have 
  397. to be created. 
  398.  
  399.     The dwell data is stored as a series of two byte 
  400. unsigned integers. Each unsigned integer contains the 
  401. dwell value and a run length corresponding to a string 
  402. of identical dwell values. The number of bits required 
  403. to hold the maximum dwell is first obtained. If the 
  404. maximum dwell is 511, then 9 bits are required, 1023 
  405. would require 10 bits, etc. Using 1023 for the maximum 
  406. dwell as an example, the right most 10 bits of the 16 
  407. bit integer represents the dwell value and the 6 left 
  408. most bits contain the run length. As a run length of 
  409. zero is not very useful, this value is always 
  410. incremented by one such that a run length of zero 
  411. equals 1, 1 is 2, etc. Given a maximum dwell of 1023 
  412. the following 16 bit unsigned integer represents a 
  413. dwell of 1000 and a run length of 32. 
  414.  
  415.                    011111 1111101000
  416.                        7FE8 hex
  417.  
  418.     When an image is being displayed and the unsigned 
  419. integer above is read, a line of 32 pixels will be 
  420. drawn using the appropriate color from the active 
  421. color mask for dwell value 1000. 
  422.  
  423.     Each line of a display is encoded with no 
  424. wraparound. This means that each line will end with 
  425. the display of an encoded unsigned integer and no 
  426. extra pixels of the same dwell will be added for the 
  427. beginning of the next line even if there is room in 
  428. the run length. 
  429.  
  430.     It should be noted that the maximum run length 
  431. that can be stored varies with the maximum dwell 
  432. chosen. Files with a maximum dwell of 1023 will have a 
  433. maximum run length of 64, those with maximum dwells of 
  434. 8191 will only store 16. This does not limit a run 
  435. length because if it exceeds the space available in a 
  436. single unsigned integer it simply creates additional 
  437. ones until the run of dwells has been stored. For this 
  438. reason images with high maximum dwell values are often 
  439. large in size. This method of file compression strikes 
  440. a good balance between file size and speed when 
  441. displaying an image. 
  442.  
  443.          The Mathematics of the Mandelbrot Set
  444.  
  445.     The Mandelbrot set is computed by operating on a 
  446. fairly simple equation that contains complex numbers 
  447. of the form 
  448.  
  449.               x + yi where  i = sqrt(-1)
  450.  
  451. The Mandelbrot equation is
  452.  
  453.                      z <- z^2 + c
  454.  
  455. where
  456.  
  457.                z = x + yi and c = a + bi
  458.  
  459. substituting these values into z^2 + c we have
  460.  
  461.                   (x + yi)^2 + a + bi
  462.  
  463.                x^2 + 2xyi - y^2 + a + bi
  464.  
  465. separating the real and imaginary parts of z gives
  466.  
  467.                   x <- x^2 - y^2 + a
  468.  
  469.                      y <- 2xy + b
  470.  
  471.     To determine whether a point (a,b) in the complex 
  472. plane is a member of the Mandelbrot set, the real and 
  473. imaginary parts of the equation are iterated. The x 
  474. and y values are first initialized to zero. The 
  475. constants a and b, the point in the plane, are then 
  476. substituted into the equations giving 
  477.  
  478.                    x <- a and y <- b
  479.  
  480. for the first iteration.
  481.  
  482.     The two new values for x and y, along with the 
  483. constants a and b, are now substituted into the 
  484. equations again. This procedure (iteration) continues 
  485. until the absolute value of x + yi > 2, ie. sqrt(x^2 + 
  486. ^y2) > 2. For those cases where this value never 
  487. exceeds 2, the maximum number of iterations is preset. 
  488. A value of about 500 is usually adequate, although 
  489. this value is raised to several thousand when smaller 
  490. details at high magnification are examined. The number 
  491. of times the equations are iterated before the value 
  492. of sqrt(x^2 + y^2) > 2 is called the dwell. Those 
  493. initial points (a,b) where the dwell is infinite, or 
  494. for more practical purposes attains the preset 
  495. maximum, are members of the Mandelbrot set. Another 
  496. way to describe this is to say that for points within 
  497. the Mandelbrot set, the sequence of points produced by 
  498. this iteration procedure is bounded inside a circle of 
  499. radius 2, where points outside the set are unbounded 
  500. and continue to grow and escape the circle. 
  501.  
  502.     The Mandelbrot set exists entirely within the area 
  503. defined by 
  504.  
  505.             -2 <= a <= 2  and  -2 <= b <= 2
  506.  
  507. in the complex plane. A Mandelbrot image is produced 
  508. by taking this area of the complex plane and dividing 
  509. it into a array of 1200 x 1200 points. Each one of 
  510. these points becomes the constant (a,b). The iteration 
  511. procedure previously described is used on each of the 
  512. 1.44 million points, coloring each point in the 
  513. Mandelbrot set black and all others white. The 
  514. algorithm is: 
  515.  
  516.     maxcount <- 1000
  517.     for b <- 2 to -2 stepdown 1/300
  518.     for a <- -2 to 2 step 1/300
  519.       x <- 0
  520.       y <- 0
  521.       count <- 0
  522.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  523.         x <- x^2 - y^2 + a
  524.         y <- 2*x*y + b
  525.         count <- count + 1
  526.       end while
  527.       if count = maxcount plot(a,b,BLACK)
  528.         else plot(a,b,WHITE)
  529.     end for a
  530.     end for b
  531.  
  532.     While the algorithm is not that complex, the 
  533. amount of computation is enormous. Depending on 
  534. programming language and style, the inner loop has at 
  535. least four multiplications and a square root. For a 
  536. point in the Mandelbrot set this loop is executed 1000 
  537. times and there are over a million points to check! It 
  538. is not surprising that the Mandelbrot set was not 
  539. discovered until the age of computers. 
  540.  
  541.     In the Mandelbrot/Julia Set Generator program some 
  542. additional refinements are made to standardize the 
  543. initial parameters used to generate a specific image. 
  544. Instead of defining the range of (a,b) values used for 
  545. an area, a center point and a magnification are 
  546. specified. The center point is simply a chosen (a,b) 
  547. value. The length of a side which encloses the area of 
  548. interest is defined as 
  549.  
  550.                 side = 2/magnification
  551.  
  552. The following values can now be defined
  553.  
  554.              a_minimum = a_center - side/2
  555.  
  556.              b_maximum = b_center + side/2
  557.  
  558.                    gap = side/width
  559.  
  560. where width is defined as the number of points that 
  561. make up a side (or on a computer screen the number of 
  562. pixels), and the gap being the distance between each 
  563. point. 
  564.  
  565.     The Mandelbrot set is an interesting image, a sort 
  566. of cardioid with a spiked head attached at the left. 
  567. The boundary of the set sprouts self similar buds of 
  568. different sizes. Vastly more interesting images are 
  569. forthcoming when we examine the boundary of the 
  570. Mandelbrot set under higher magnification. To obtain 
  571. higher magnifications we simply divide a smaller area 
  572. into our array of points. For example, the area 
  573. defined by the center point (-0.77,0.17) and 
  574. magnification 20 is located in the upper valley 
  575. between the head and the cardioid shaped body. 
  576.  
  577.     If we continue with these magnifications, very 
  578. different and interesting images can be produced by 
  579. coloring the dwell values in specific ways. Along with 
  580. coloring points in the Mandelbrot set black, we can 
  581. assign different colors to other points based upon 
  582. their dwell value. For example, we might assign yellow 
  583. to dwell values in the range 400 to 499, red to 300 to 
  584. 399, etc. When we do this a great deal more detail 
  585. begins to appear in the boundary regions. This region 
  586. of interest exists only in a narrow band just outside 
  587. the Mandelbrot set. The skill one uses in choosing the 
  588. various colors for differing dwell values is very 
  589. important when attempting to produce an attractive 
  590. image. 
  591.  
  592.     The Mandelbrot/Julia Set Generator uses a file 
  593. called a color mask to store the colors used in 
  594. painting the various dwell values in an image. This 
  595. technique allows many different coloring schemes for a 
  596. single image. Consider the following color mask: 
  597.  
  598.     Dwell Range    Odd Color   Even Color
  599. ----------------------------------------------
  600.     0     9        blue        white
  601.     10    19       red         red
  602.     20    510      yellow      yellow
  603.     511   511      black       black
  604.     -1
  605.  
  606.     Dwell values from 0 to 9 will be colored blue if 
  607. they are odd numbers and white if they are even. 
  608. Values from 10 to 19 will be colored red, 20 to 510 
  609. yellow and 511 will be colored black. Choosing the 
  610. maximum dwell value to be in the set 2n - 1 maximizes 
  611. the file compression method the Mandelbrot/Julia Set 
  612. Generator program uses. 
  613.  
  614.     Generating Julia set images is a similar process. 
  615. The point (a,b) is chosen from one of the interesting 
  616. boundary areas of the Mandelbrot set. This value is 
  617. held constant and the (x,y) value is initialized to 
  618. the various points in the complex plane defined by 
  619.  
  620.             -2 <= x <= 2  and  -2 <= y <= 2
  621.  
  622.     This would be a magnification of 0.5, actually the 
  623. Julia image can often be enlarged slightly to fill the 
  624. screen and magnifications from 0.6 to 0.9 are often 
  625. used. 
  626.  
  627.     The algorithm for generating a Julia set is
  628.  
  629.     maxcount <- 1000
  630.     a <- constant
  631.     b <- constant
  632.     for y <- 2 to -2 stepdown 1/300
  633.     for x <- -2 to 2 step 1/300
  634.       count <- 00
  635.       while sqrt(x^2 + y^2) < 2 and count < maxcount
  636.         x <- x^2 - y^2 + a
  637.         y <- 2*x*y + b
  638.         count <- count + 1
  639.       end while
  640.       if count = maxcount plot(a,b,BLACK)
  641.           else plot(a,b,WHITE)
  642.     end for x
  643.     end for y
  644.  
  645.                   Selected References
  646.  
  647. Barnsley, Michael, Fractals Everywhere. San Diego, CA: 
  648.     Academic Press, 1988. 
  649.  
  650. Briggs, John and Peat, F. David Turbulent Mirror. New 
  651.     York: Harper & Row, 1989. 
  652.  
  653. Devaney, Robert L.Choas, Fractals, and Dynamics. Menlo 
  654.     Park, CA:Addison-Wesley, 1990. 
  655.  
  656. Devaney, Robert L. and Keen, Linda, Editors. Chaos and 
  657.     Fractals, The Mathematics Behind the Computer 
  658.     Graphics: Proceedings of Symposia in Applied 
  659.     Mathematics.Providence, RI: American Mathematical 
  660.     Society, 1989. 
  661.  
  662. Gleick, James Chaos, Making a New Science. New York: 
  663.     Viking Penguin, Inc., 1987. 
  664.  
  665. Mandelbrot, Benoit B. The Fractal Geometry of Nature. 
  666.     New York: W. H. Freeman and Co., 1983. 
  667.  
  668. Peitgen, Heinz-Otto and Richter, Peter H. The Beauty 
  669.     of Fractals, Images of Complex Dynamical Systems. 
  670.     Berlin: Springer-Verlag, 1986. 
  671.  
  672. Peitgen, Heinz-Otto and Saupe, Dietmar, Editors. The 
  673.     Science of Fractal Images. New York: Springer-
  674.     Verlag, 1988. 
  675.  
  676. Pietgen, Heinz-Otto, Jurgens, Hartmut and Saupe, 
  677.     Dietmar Fractals for the Classroom, (Volumes I & 
  678.     II), New York: Springer-Verlag, 1992. (There is a 
  679.     single volume work entitled Chaos and Fractals, 
  680.     New Frontiers of Science, which is essentially the 
  681.     same work as the two volume set above.) 
  682.  
  683. Pickover, Clifford A. Computers Pattern Chaos and 
  684.     Beauty: Graphics from an Unseen World.New York: 
  685.     St. Martin's Press, 1990. 
  686.  
  687. Pickover, Clifford A. Computers and the Imagination: 
  688.     Visual Adventures Beyond the Edge. New York: St. 
  689.     Martin's Press, 1991. 
  690.  
  691. Pickover, Clifford A. Mazes for the Mind. New York: 
  692.     St. Martins Press, 1992. 
  693.  
  694. Schroeder, Manfred Fractals, Chaos, Power Laws, 
  695.     Minutes from an Infinite Paradise.New York: W.H. 
  696.     Freeman and Co., 1991. 
  697.  
  698. Stevens, Roger T. Fractal Programing in C. Redwood 
  699.     City, CA: M&T Publishing, Inc., 1989. 
  700.  
  701. Stevens, Roger T. Advanced Fractal Programing in C. 
  702.     Redwood City, CA: M&T Publishing, Inc., 1990. 
  703.  
  704. Stewart, Ian Does God Play Dice? The Mathematics of 
  705.     Chaos. Oxford: Basil Blackwell, 1989. 
  706.  
  707. Stewart, Ian and Golubitsky, Martin Fearful Symmetry, 
  708.     Is God a Geometer? Oxford: Blackwell, 1992. 
  709.  
  710.                      Registration
  711.  
  712.     You may freely copy and distribute this shareware 
  713. Version 5.0 of the Mandelbrot/Julia Set Generator. 
  714. Shareware users who find the Mandelbrot/Julia Set 
  715. Generator useful should support the author and 
  716. register their copy. The form found below should be 
  717. used for registration. Registered users will receive a 
  718. copy of Version 5.1 of the Mandelbrot/Julia Set 
  719. Generator with additional images and a printed manual. 
  720. Registered users will also receive support, by letter 
  721. mail or e-mail, for six months from the date of 
  722. registration. 
  723.  
  724.     The Mandelbrot/Julia Set Generator is a "shareware 
  725. program" and is provided at no charge to the user for 
  726. evaluation. Vendors who distribute shareware programs 
  727. may charge a small fee for an evaluation copy. Feel 
  728. free to share this program with your friends, but 
  729. please do not give it away altered or as part of 
  730. another system. The essence of "user-supported" 
  731. software is to provide personal computer users with 
  732. quality software without high prices, and yet to 
  733. provide incentive for programmers to continue to 
  734. develop new products.  If you find this program useful 
  735. and find that you are using the Mandelbrot/Julia Set 
  736. Generator and continue to use the Mandelbrot/Julia Set 
  737. Generator after a reasonable trial period, you must 
  738. make a registration payment of $25. plus $2. shipping 
  739. to Theron Wierenga. The registration fee will license 
  740. one copy for use on any one computer at any one time. 
  741. You must treat this registered software just like a 
  742. book. An example is that this registered software may 
  743. be used by any number of people and may be freely 
  744. moved from one computer location to another, so long 
  745. as there is no possibility of it being used at one 
  746. location while it's being used at another. Just as a 
  747. book cannot be read by two different persons at the 
  748. same time. 
  749.  
  750.     The registration fee is $25. ($35. outside the 
  751. United States.) Please include $2.00 for shipping and 
  752. handling. A complete listing of the program, which is 
  753. written in Borland C/C++, is also available for an 
  754. additional $20.00. All prices are in U.S. dollars. 
  755.  
  756.    Checks should be made out to:
  757.  
  758.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  759.  
  760.                   Ombudsman Statement
  761.  
  762.     This program is produced by a member of the 
  763. Association of Shareware Professionals (ASP). The ASP 
  764. wants to make sure that the shareware principle works 
  765. for you. If you are unable to resolve a shareware-
  766. related problem with an ASP member by contacting the 
  767. member directly, ASP may be able to help. The ASP 
  768. Ombudsman can help you resolve a dispute or problem 
  769. with an ASP member, but does not provide technical 
  770. support for members' products. Please write to the ASP 
  771. Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 
  772. USA, FAX 616-788-2765 or send a CompuServe message via 
  773. CompuServe Mail to ASP Ombudsman 70007,3536. 
  774.  
  775.                      User Support
  776.  
  777.     Registered users will receive support, by letter 
  778. mail or e-mail, for six months from the date of 
  779. registration on any problems they encounter. The 
  780. author is available by e-mail on the internet at 
  781. mups_wiereng@wmich.edu. 
  782.  
  783.                    Registration Form
  784.  
  785.       Mandelbrot/Julia Set Generator, Version 5.0
  786.  
  787.   Name______________________________________________
  788.  
  789.   Address___________________________________________
  790.              
  791.   City_________________________State_____Zip________
  792.  
  793.   Disk size:   5 1/4 in._______     3 1/2 in._______
  794.  
  795.   Registration fee . . . . . . . . $20.00 __________
  796.   Registration fee (Outside USA) .  30.00 __________
  797.   Borland C/C++ program code . . .  20.00 __________
  798.   Shipping . . . . . . . . . . . .        ___2.00___
  799.  
  800.   Total enclosed . . . . . . . . .        __________
  801.            (All prices are in U.S. dollars.)
  802.  
  803.                   Method of payment: 
  804.   Check or MO_______ MasterCard________ Visa________
  805.  
  806.   Account number__________________ Expir. date______
  807.  
  808.   Signature (necessary)_____________________________
  809.  
  810.   How did you receive your copy of this program?
  811.  
  812.   __________________________________________________
  813.  
  814.   Suggested improvements____________________________
  815.  
  816.   __________________________________________________
  817.  
  818.   __________________________________________________
  819.  
  820.   __________________________________________________
  821.  
  822.     The Mandelbrot/Julia Set Generator, Version 5.0
  823.  
  824.                is a software product of
  825.  
  826.    Theron Wierenga, P.O. Box 595, Muskegon, MI 49443
  827.  
  828.